package com.jt.controller;

import com.jt.pojo.User;
import com.jt.seivice.UserService;
import com.jt.vo.PageResult;
import com.jt.vo.SysResult;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@CrossOrigin
@RequestMapping("/user")
public class UserController {

    @Autowired
    private UserService userService;

    @GetMapping("/findAll")
    public List<User> findAll() {
        return userService.findAll();
    }

    /**
     * 根据u/p查询数据库,返回秘钥token
     * URL:./user/login
     * 参数:username/password
     * 返回值:SysResult对象(token)
     */
    @PostMapping("/login")
    public SysResult login(@RequestBody User user) {

        String token = userService.findUserByUp(user);
        if (token == null || "".equals(token)) {
            //表示用户名密码错误
            return SysResult.fail();
        }
        //表示用户名密码正确,返回秘钥信息
        return SysResult.success(token);
    }

    /**
     * 需求: 利用分页查询用户
     * URL:user/list
     * 参数:http://localhost:8091/user/list?query=查询关键字&pageNum=1&pageSize=10
     * 返回值:SysResult(pageResult)
     */
    @GetMapping("/list")
    public SysResult getUserListByPage(PageResult pageResult) {
        pageResult = userService.getUserListByPage(pageResult);
        return SysResult.success(pageResult);
    }

    /**
     * 需求:根据id修改用户状态
     * URL: /user/status/{id}/{status}           restful方式
     * 参数:id/status
     * 返回值:SysResult
     */
    @PutMapping("/status/{id}/{status}")
    public SysResult updateStatusById(User user) {
        userService.updateStatusById(user);
        return SysResult.success();
    }

    /**
     * 业务：新增用户操作
     * URL：/user/addUser
     * 参数：JS对象 经过浏览器解析变为JSON串
     * 返回值：SysResult对象
     */
    @PostMapping("/addUser")
    public SysResult saveUser(@RequestBody User user) {
        userService.saveUser(user);
        return SysResult.success();
    }

    /**
     * 业务:  根据ID查询用户
     * URL:  /user/{id}
     * 参数: id
     * 返回值 SysResult对象
     */
    @GetMapping("{id}")
    public SysResult findUserById(@PathVariable Integer id) {
        User user = userService.findUserById(id);
        return SysResult.success(user);
    }

    /**
     * 业务:  修改用户数据操作
     * URL:`/user/updateUser`  不是restful形式
     * 参数:user对象
     * 返回值:SysResult对象
     */
    @PutMapping("/updateUser")
    public SysResult updateUser(@RequestBody User user) {
        userService.updateUser(user);
        return SysResult.success();
    }

    /**
     * 业务:根据id删除用户数据
     * URL:`/user/${user.id}`
     * 参数 :{user.id}
     * 返回值:SysResult对象
     */
    @DeleteMapping("{id}")
    public SysResult deleteUser(@PathVariable Integer id) {
        userService.deleteUser(id);
        return SysResult.success();
    }

}